#ifndef TC_SMEVENT_HH
#define TC_SMEVENT_HH

/** \file SmEvent.hh 
 * Declarations for the class SmEvent.
 *
 * (c) Copyright 2003-2006 by Semih Cemiloglu
 * All rights reserved, see COPYRIGHT file for details.
 *
 * $Id: SmEvent.hh 119 2006-06-21 04:57:25Z semihc $
 *
 *
 */

#ifndef TC_GLOBAL_HH
# include "Global.hh"
#endif


namespace TC {

  //! Signal type for State Machines
  typedef unsigned SmSignal_t;
  
  // Standard HSM signals
  enum {
    HSM_EMPTY_SIG  = 0,
    HSM_INIT_SIG   = 1,
    HSM_ENTRY_SIG  = 2,
    HSM_EXIT_SIG   = 3,
    HSM_USER_SIG   = 4
  };


  //! Event type for State Machines
  class SmEvent
  {
  public:
    // CREATORS
    SmEvent(SmSignal_t sig);
    virtual ~SmEvent();

    // ACCESSORS
    SmSignal_t getSignal() const { return m_sig; }

    // MODIFIERS
    void setSignal(SmSignal_t sig) { m_sig = sig; }

  private:
    // MEMBERS
    SmSignal_t m_sig;

  }; // end class



} // end namespace




#endif /* TC_SMEVENT_HH */
